home *** CD-ROM | disk | FTP | other *** search
- package java.io;
-
- import java.lang.reflect.Array;
- import java.lang.reflect.Proxy;
- import java.security.AccessController;
- import java.util.HashMap;
-
- public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants {
- private static final int NULL_HANDLE = -1;
- private static final Object unsharedMarker = new Object();
- private static final HashMap primClasses = new HashMap(8, 1.0F);
- private final BlockDataInputStream bin;
- private final ValidationList vlist;
- private int depth;
- private boolean closed;
- private final HandleTable handles;
- private int passHandle = -1;
- private boolean defaultDataEnd = false;
- private byte[] primVals;
- private final boolean enableOverride;
- private boolean enableResolve;
- private CallbackContext curContext;
-
- public ObjectInputStream(InputStream var1) throws IOException {
- this.verifySubclass();
- this.bin = new BlockDataInputStream(this, var1);
- this.handles = new HandleTable(10);
- this.vlist = new ValidationList();
- this.enableOverride = false;
- this.readStreamHeader();
- this.bin.setBlockDataMode(true);
- }
-
- protected ObjectInputStream() throws IOException, SecurityException {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION);
- }
-
- this.bin = null;
- this.handles = null;
- this.vlist = null;
- this.enableOverride = true;
- }
-
- public final Object readObject() throws IOException, ClassNotFoundException {
- if (this.enableOverride) {
- return this.readObjectOverride();
- } else {
- int var1 = this.passHandle;
-
- Object var4;
- try {
- Object var2 = this.readObject0(false);
- this.handles.markDependency(var1, this.passHandle);
- ClassNotFoundException var3 = this.handles.lookupException(this.passHandle);
- if (var3 != null) {
- throw var3;
- }
-
- if (this.depth == 0) {
- this.vlist.doCallbacks();
- }
-
- var4 = var2;
- } finally {
- this.passHandle = var1;
- if (this.closed && this.depth == 0) {
- this.clear();
- }
-
- }
-
- return var4;
- }
- }
-
- protected Object readObjectOverride() throws IOException, ClassNotFoundException {
- return null;
- }
-
- public Object readUnshared() throws IOException, ClassNotFoundException {
- int var1 = this.passHandle;
-
- Object var4;
- try {
- Object var2 = this.readObject0(true);
- this.handles.markDependency(var1, this.passHandle);
- ClassNotFoundException var3 = this.handles.lookupException(this.passHandle);
- if (var3 != null) {
- throw var3;
- }
-
- if (this.depth == 0) {
- this.vlist.doCallbacks();
- }
-
- var4 = var2;
- } finally {
- this.passHandle = var1;
- if (this.closed && this.depth == 0) {
- this.clear();
- }
-
- }
-
- return var4;
- }
-
- public void defaultReadObject() throws IOException, ClassNotFoundException {
- if (this.curContext == null) {
- throw new NotActiveException("not in call to readObject");
- } else {
- Object var1 = this.curContext.getObj();
- ObjectStreamClass var2 = this.curContext.getDesc();
- this.bin.setBlockDataMode(false);
- this.defaultReadFields(var1, var2);
- this.bin.setBlockDataMode(true);
- if (!var2.hasWriteObjectData()) {
- this.defaultDataEnd = true;
- }
-
- ClassNotFoundException var3 = this.handles.lookupException(this.passHandle);
- if (var3 != null) {
- throw var3;
- }
- }
- }
-
- public GetField readFields() throws IOException, ClassNotFoundException {
- if (this.curContext == null) {
- throw new NotActiveException("not in call to readObject");
- } else {
- Object var1 = this.curContext.getObj();
- ObjectStreamClass var2 = this.curContext.getDesc();
- this.bin.setBlockDataMode(false);
- GetFieldImpl var3 = new GetFieldImpl(this, var2);
- var3.readFields();
- this.bin.setBlockDataMode(true);
- if (!var2.hasWriteObjectData()) {
- this.defaultDataEnd = true;
- }
-
- return var3;
- }
- }
-
- public void registerValidation(ObjectInputValidation var1, int var2) throws NotActiveException, InvalidObjectException {
- if (this.depth == 0) {
- throw new NotActiveException("stream inactive");
- } else {
- this.vlist.register(var1, var2);
- }
- }
-
- protected Class<?> resolveClass(ObjectStreamClass var1) throws IOException, ClassNotFoundException {
- String var2 = var1.getName();
-
- try {
- return Class.forName(var2, false, latestUserDefinedLoader());
- } catch (ClassNotFoundException var5) {
- Class var4 = (Class)primClasses.get(var2);
- if (var4 != null) {
- return var4;
- } else {
- throw var5;
- }
- }
- }
-
- protected Class<?> resolveProxyClass(String[] var1) throws IOException, ClassNotFoundException {
- ClassLoader var2 = latestUserDefinedLoader();
- ClassLoader var3 = null;
- boolean var4 = false;
- Class[] var5 = new Class[var1.length];
-
- for(int var6 = 0; var6 < var1.length; ++var6) {
- Class var7 = Class.forName(var1[var6], false, var2);
- if ((var7.getModifiers() & 1) == 0) {
- if (var4) {
- if (var3 != var7.getClassLoader()) {
- throw new IllegalAccessError("conflicting non-public interface class loaders");
- }
- } else {
- var3 = var7.getClassLoader();
- var4 = true;
- }
- }
-
- var5[var6] = var7;
- }
-
- try {
- return Proxy.getProxyClass(var4 ? var3 : var2, var5);
- } catch (IllegalArgumentException var8) {
- throw new ClassNotFoundException((String)null, var8);
- }
- }
-
- protected Object resolveObject(Object var1) throws IOException {
- return var1;
- }
-
- protected boolean enableResolveObject(boolean var1) throws SecurityException {
- if (var1 == this.enableResolve) {
- return var1;
- } else {
- if (var1) {
- SecurityManager var2 = System.getSecurityManager();
- if (var2 != null) {
- var2.checkPermission(SUBSTITUTION_PERMISSION);
- }
- }
-
- this.enableResolve = var1;
- return !this.enableResolve;
- }
- }
-
- protected void readStreamHeader() throws IOException, StreamCorruptedException {
- short var1 = this.bin.readShort();
- short var2 = this.bin.readShort();
- if (var1 != -21267 || var2 != 5) {
- throw new StreamCorruptedException(String.format("invalid stream header: %04X%04X", var1, var2));
- }
- }
-
- protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
- ObjectStreamClass var1 = new ObjectStreamClass();
- var1.readNonProxy(this);
- return var1;
- }
-
- public int read() throws IOException {
- return this.bin.read();
- }
-
- public int read(byte[] var1, int var2, int var3) throws IOException {
- if (var1 == null) {
- throw new NullPointerException();
- } else {
- int var4 = var2 + var3;
- if (var2 >= 0 && var3 >= 0 && var4 <= var1.length && var4 >= 0) {
- return this.bin.read(var1, var2, var3, false);
- } else {
- throw new IndexOutOfBoundsException();
- }
- }
- }
-
- public int available() throws IOException {
- return this.bin.available();
- }
-
- public void close() throws IOException {
- this.closed = true;
- if (this.depth == 0) {
- this.clear();
- }
-
- this.bin.close();
- }
-
- public boolean readBoolean() throws IOException {
- return this.bin.readBoolean();
- }
-
- public byte readByte() throws IOException {
- return this.bin.readByte();
- }
-
- public int readUnsignedByte() throws IOException {
- return this.bin.readUnsignedByte();
- }
-
- public char readChar() throws IOException {
- return this.bin.readChar();
- }
-
- public short readShort() throws IOException {
- return this.bin.readShort();
- }
-
- public int readUnsignedShort() throws IOException {
- return this.bin.readUnsignedShort();
- }
-
- public int readInt() throws IOException {
- return this.bin.readInt();
- }
-
- public long readLong() throws IOException {
- return this.bin.readLong();
- }
-
- public float readFloat() throws IOException {
- return this.bin.readFloat();
- }
-
- public double readDouble() throws IOException {
- return this.bin.readDouble();
- }
-
- public void readFully(byte[] var1) throws IOException {
- this.bin.readFully(var1, 0, var1.length, false);
- }
-
- public void readFully(byte[] var1, int var2, int var3) throws IOException {
- int var4 = var2 + var3;
- if (var2 >= 0 && var3 >= 0 && var4 <= var1.length && var4 >= 0) {
- this.bin.readFully(var1, var2, var3, false);
- } else {
- throw new IndexOutOfBoundsException();
- }
- }
-
- public int skipBytes(int var1) throws IOException {
- return this.bin.skipBytes(var1);
- }
-
- /** @deprecated */
- @Deprecated
- public String readLine() throws IOException {
- return this.bin.readLine();
- }
-
- public String readUTF() throws IOException {
- return this.bin.readUTF();
- }
-
- private void verifySubclass() {
- Class var1 = this.getClass();
- if (var1 != ObjectInputStream.class) {
- SecurityManager var2 = System.getSecurityManager();
- if (var2 != null) {
- ObjectStreamClass.processQueue(java.io.ObjectInputStream.Caches.subclassAuditsQueue, java.io.ObjectInputStream.Caches.subclassAudits);
- ObjectStreamClass.WeakClassKey var3 = new ObjectStreamClass.WeakClassKey(var1, java.io.ObjectInputStream.Caches.subclassAuditsQueue);
- Boolean var4 = (Boolean)java.io.ObjectInputStream.Caches.subclassAudits.get(var3);
- if (var4 == null) {
- var4 = auditSubclass(var1);
- java.io.ObjectInputStream.Caches.subclassAudits.putIfAbsent(var3, var4);
- }
-
- if (!var4) {
- var2.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION);
- }
- }
- }
- }
-
- private static boolean auditSubclass(Class var0) {
- Boolean var1 = (Boolean)AccessController.doPrivileged(new 1(var0));
- return var1;
- }
-
- private void clear() {
- this.handles.clear();
- this.vlist.clear();
- }
-
- private Object readObject0(boolean var1) throws IOException {
- boolean var2 = this.bin.getBlockDataMode();
- if (var2) {
- int var3 = this.bin.currentBlockRemaining();
- if (var3 > 0) {
- throw new OptionalDataException(var3);
- }
-
- if (this.defaultDataEnd) {
- throw new OptionalDataException(true);
- }
-
- this.bin.setBlockDataMode(false);
- }
-
- byte var8;
- while((var8 = this.bin.peekByte()) == 121) {
- this.bin.readByte();
- this.handleReset();
- }
-
- ++this.depth;
-
- try {
- switch (var8) {
- case 112:
- Object var16 = this.readNull();
- return var16;
- case 113:
- Object var15 = this.readHandle(var1);
- return var15;
- case 114:
- case 125:
- ObjectStreamClass var14 = this.readClassDesc(var1);
- return var14;
- case 115:
- Object var13 = this.checkResolve(this.readOrdinaryObject(var1));
- return var13;
- case 116:
- case 124:
- Object var12 = this.checkResolve(this.readString(var1));
- return var12;
- case 117:
- Object var11 = this.checkResolve(this.readArray(var1));
- return var11;
- case 118:
- Class var10 = this.readClass(var1);
- return var10;
- case 119:
- case 122:
- if (var2) {
- this.bin.setBlockDataMode(true);
- this.bin.peek();
- throw new OptionalDataException(this.bin.currentBlockRemaining());
- }
-
- throw new StreamCorruptedException("unexpected block data");
- case 120:
- if (var2) {
- throw new OptionalDataException(true);
- }
-
- throw new StreamCorruptedException("unexpected end of block data");
- case 121:
- default:
- throw new StreamCorruptedException(String.format("invalid type code: %02X", var8));
- case 123:
- IOException var9 = this.readFatalException();
- throw new WriteAbortedException("writing aborted", var9);
- case 126:
- Object var4 = this.checkResolve(this.readEnum(var1));
- return var4;
- }
- } finally {
- --this.depth;
- this.bin.setBlockDataMode(var2);
- }
- }
-
- private Object checkResolve(Object var1) throws IOException {
- if (this.enableResolve && this.handles.lookupException(this.passHandle) == null) {
- Object var2 = this.resolveObject(var1);
- if (var2 != var1) {
- this.handles.setObject(this.passHandle, var2);
- }
-
- return var2;
- } else {
- return var1;
- }
- }
-
- String readTypeString() throws IOException {
- int var1 = this.passHandle;
-
- try {
- byte var2 = this.bin.peekByte();
- switch (var2) {
- case 112:
- String var8 = (String)this.readNull();
- return var8;
- case 113:
- String var7 = (String)this.readHandle(false);
- return var7;
- case 116:
- case 124:
- String var3 = this.readString(false);
- return var3;
- default:
- throw new StreamCorruptedException(String.format("invalid type code: %02X", var2));
- }
- } finally {
- this.passHandle = var1;
- }
- }
-
- private Object readNull() throws IOException {
- if (this.bin.readByte() != 112) {
- throw new InternalError();
- } else {
- this.passHandle = -1;
- return null;
- }
- }
-
- private Object readHandle(boolean var1) throws IOException {
- if (this.bin.readByte() != 113) {
- throw new InternalError();
- } else {
- this.passHandle = this.bin.readInt() - 8257536;
- if (this.passHandle >= 0 && this.passHandle < this.handles.size()) {
- if (var1) {
- throw new InvalidObjectException("cannot read back reference as unshared");
- } else {
- Object var2 = this.handles.lookupObject(this.passHandle);
- if (var2 == unsharedMarker) {
- throw new InvalidObjectException("cannot read back reference to unshared object");
- } else {
- return var2;
- }
- }
- } else {
- throw new StreamCorruptedException(String.format("invalid handle value: %08X", this.passHandle + 8257536));
- }
- }
- }
-
- private Class readClass(boolean var1) throws IOException {
- if (this.bin.readByte() != 118) {
- throw new InternalError();
- } else {
- ObjectStreamClass var2 = this.readClassDesc(false);
- Class var3 = var2.forClass();
- this.passHandle = this.handles.assign(var1 ? unsharedMarker : var3);
- ClassNotFoundException var4 = var2.getResolveException();
- if (var4 != null) {
- this.handles.markException(this.passHandle, var4);
- }
-
- this.handles.finish(this.passHandle);
- return var3;
- }
- }
-
- private ObjectStreamClass readClassDesc(boolean var1) throws IOException {
- byte var2 = this.bin.peekByte();
- switch (var2) {
- case 112:
- return (ObjectStreamClass)this.readNull();
- case 113:
- return (ObjectStreamClass)this.readHandle(var1);
- case 114:
- return this.readNonProxyDesc(var1);
- case 125:
- return this.readProxyDesc(var1);
- default:
- throw new StreamCorruptedException(String.format("invalid type code: %02X", var2));
- }
- }
-
- private ObjectStreamClass readProxyDesc(boolean var1) throws IOException {
- if (this.bin.readByte() != 125) {
- throw new InternalError();
- } else {
- ObjectStreamClass var2 = new ObjectStreamClass();
- int var3 = this.handles.assign(var1 ? unsharedMarker : var2);
- this.passHandle = -1;
- int var4 = this.bin.readInt();
- String[] var5 = new String[var4];
-
- for(int var6 = 0; var6 < var4; ++var6) {
- var5[var6] = this.bin.readUTF();
- }
-
- Class var10 = null;
- ClassNotFoundException var7 = null;
- this.bin.setBlockDataMode(true);
-
- try {
- if ((var10 = this.resolveProxyClass(var5)) == null) {
- var7 = new ClassNotFoundException("null class");
- }
- } catch (ClassNotFoundException var9) {
- var7 = var9;
- }
-
- this.skipCustomData();
- var2.initProxy(var10, var7, this.readClassDesc(false));
- this.handles.finish(var3);
- this.passHandle = var3;
- return var2;
- }
- }
-
- private ObjectStreamClass readNonProxyDesc(boolean var1) throws IOException {
- if (this.bin.readByte() != 114) {
- throw new InternalError();
- } else {
- ObjectStreamClass var2 = new ObjectStreamClass();
- int var3 = this.handles.assign(var1 ? unsharedMarker : var2);
- this.passHandle = -1;
- Object var4 = null;
-
- try {
- var10 = this.readClassDescriptor();
- } catch (ClassNotFoundException var9) {
- throw (IOException)(new InvalidClassException("failed to read class descriptor")).initCause(var9);
- }
-
- Class var5 = null;
- ClassNotFoundException var6 = null;
- this.bin.setBlockDataMode(true);
-
- try {
- if ((var5 = this.resolveClass(var10)) == null) {
- var6 = new ClassNotFoundException("null class");
- }
- } catch (ClassNotFoundException var8) {
- var6 = var8;
- }
-
- this.skipCustomData();
- var2.initNonProxy(var10, var5, var6, this.readClassDesc(false));
- this.handles.finish(var3);
- this.passHandle = var3;
- return var2;
- }
- }
-
- private String readString(boolean var1) throws IOException {
- byte var3 = this.bin.readByte();
- String var2;
- switch (var3) {
- case 116:
- var2 = this.bin.readUTF();
- break;
- case 124:
- var2 = this.bin.readLongUTF();
- break;
- default:
- throw new StreamCorruptedException(String.format("invalid type code: %02X", var3));
- }
-
- this.passHandle = this.handles.assign(var1 ? unsharedMarker : var2);
- this.handles.finish(this.passHandle);
- return var2;
- }
-
- private Object readArray(boolean var1) throws IOException {
- if (this.bin.readByte() != 117) {
- throw new InternalError();
- } else {
- ObjectStreamClass var2 = this.readClassDesc(false);
- int var3 = this.bin.readInt();
- Object var4 = null;
- Class var6 = null;
- Class var5;
- if ((var5 = var2.forClass()) != null) {
- var6 = var5.getComponentType();
- var4 = Array.newInstance(var6, var3);
- }
-
- int var7 = this.handles.assign(var1 ? unsharedMarker : var4);
- ClassNotFoundException var8 = var2.getResolveException();
- if (var8 != null) {
- this.handles.markException(var7, var8);
- }
-
- if (var6 == null) {
- for(int var9 = 0; var9 < var3; ++var9) {
- this.readObject0(false);
- }
- } else if (var6.isPrimitive()) {
- if (var6 == Integer.TYPE) {
- this.bin.readInts((int[])var4, 0, var3);
- } else if (var6 == Byte.TYPE) {
- this.bin.readFully((byte[])var4, 0, var3, true);
- } else if (var6 == Long.TYPE) {
- this.bin.readLongs((long[])var4, 0, var3);
- } else if (var6 == Float.TYPE) {
- this.bin.readFloats((float[])var4, 0, var3);
- } else if (var6 == Double.TYPE) {
- this.bin.readDoubles((double[])var4, 0, var3);
- } else if (var6 == Short.TYPE) {
- this.bin.readShorts((short[])var4, 0, var3);
- } else if (var6 == Character.TYPE) {
- this.bin.readChars((char[])var4, 0, var3);
- } else {
- if (var6 != Boolean.TYPE) {
- throw new InternalError();
- }
-
- this.bin.readBooleans((boolean[])var4, 0, var3);
- }
- } else {
- Object[] var11 = var4;
-
- for(int var10 = 0; var10 < var3; ++var10) {
- var11[var10] = this.readObject0(false);
- this.handles.markDependency(var7, this.passHandle);
- }
- }
-
- this.handles.finish(var7);
- this.passHandle = var7;
- return var4;
- }
- }
-
- private Enum readEnum(boolean var1) throws IOException {
- if (this.bin.readByte() != 126) {
- throw new InternalError();
- } else {
- ObjectStreamClass var2 = this.readClassDesc(false);
- if (!var2.isEnum()) {
- throw new InvalidClassException("non-enum class: " + var2);
- } else {
- int var3 = this.handles.assign(var1 ? unsharedMarker : null);
- ClassNotFoundException var4 = var2.getResolveException();
- if (var4 != null) {
- this.handles.markException(var3, var4);
- }
-
- String var5 = this.readString(false);
- Enum var6 = null;
- Class var7 = var2.forClass();
- if (var7 != null) {
- try {
- var6 = Enum.valueOf(var7, var5);
- } catch (IllegalArgumentException var9) {
- throw (IOException)(new InvalidObjectException("enum constant " + var5 + " does not exist in " + var7)).initCause(var9);
- }
-
- if (!var1) {
- this.handles.setObject(var3, var6);
- }
- }
-
- this.handles.finish(var3);
- this.passHandle = var3;
- return var6;
- }
- }
- }
-
- private Object readOrdinaryObject(boolean var1) throws IOException {
- if (this.bin.readByte() != 115) {
- throw new InternalError();
- } else {
- ObjectStreamClass var2 = this.readClassDesc(false);
- var2.checkDeserialize();
-
- Object var3;
- try {
- var3 = var2.isInstantiable() ? var2.newInstance() : null;
- } catch (Exception var6) {
- throw (IOException)(new InvalidClassException(var2.forClass().getName(), "unable to create instance")).initCause(var6);
- }
-
- this.passHandle = this.handles.assign(var1 ? unsharedMarker : var3);
- ClassNotFoundException var4 = var2.getResolveException();
- if (var4 != null) {
- this.handles.markException(this.passHandle, var4);
- }
-
- if (var2.isExternalizable()) {
- this.readExternalData((Externalizable)var3, var2);
- } else {
- this.readSerialData(var3, var2);
- }
-
- this.handles.finish(this.passHandle);
- if (var3 != null && this.handles.lookupException(this.passHandle) == null && var2.hasReadResolveMethod()) {
- Object var5 = var2.invokeReadResolve(var3);
- if (var1 && var5.getClass().isArray()) {
- var5 = cloneArray(var5);
- }
-
- if (var5 != var3) {
- var3 = var5;
- this.handles.setObject(this.passHandle, var5);
- }
- }
-
- return var3;
- }
- }
-
- private void readExternalData(Externalizable var1, ObjectStreamClass var2) throws IOException {
- CallbackContext var3 = this.curContext;
- this.curContext = null;
- boolean var4 = var2.hasBlockExternalData();
- if (var4) {
- this.bin.setBlockDataMode(true);
- }
-
- if (var1 != null) {
- try {
- var1.readExternal(this);
- } catch (ClassNotFoundException var6) {
- this.handles.markException(this.passHandle, var6);
- }
- }
-
- if (var4) {
- this.skipCustomData();
- }
-
- this.curContext = var3;
- }
-
- private void readSerialData(Object var1, ObjectStreamClass var2) throws IOException {
- ObjectStreamClass.ClassDataSlot[] var3 = var2.getClassDataLayout();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- ObjectStreamClass var5 = var3[var4].desc;
- if (var3[var4].hasData) {
- if (var1 != null && var5.hasReadObjectMethod() && this.handles.lookupException(this.passHandle) == null) {
- CallbackContext var6 = this.curContext;
- this.curContext = new CallbackContext(var1, var5);
- this.bin.setBlockDataMode(true);
-
- try {
- var5.invokeReadObject(var1, this);
- } catch (ClassNotFoundException var11) {
- this.handles.markException(this.passHandle, var11);
- } finally {
- this.curContext.setUsed();
- }
-
- this.curContext = var6;
- this.defaultDataEnd = false;
- } else {
- this.defaultReadFields(var1, var5);
- }
-
- if (var5.hasWriteObjectData()) {
- this.skipCustomData();
- } else {
- this.bin.setBlockDataMode(false);
- }
- } else if (var1 != null && var5.hasReadObjectNoDataMethod() && this.handles.lookupException(this.passHandle) == null) {
- var5.invokeReadObjectNoData(var1);
- }
- }
-
- }
-
- private void skipCustomData() throws IOException {
- int var1 = this.passHandle;
-
- while(true) {
- if (this.bin.getBlockDataMode()) {
- this.bin.skipBlockData();
- this.bin.setBlockDataMode(false);
- }
-
- switch (this.bin.peekByte()) {
- case 119:
- case 122:
- this.bin.setBlockDataMode(true);
- break;
- case 120:
- this.bin.readByte();
- this.passHandle = var1;
- return;
- case 121:
- default:
- this.readObject0(false);
- }
- }
- }
-
- private void defaultReadFields(Object var1, ObjectStreamClass var2) throws IOException {
- Class var3 = var2.forClass();
- if (var3 != null && var1 != null && !var3.isInstance(var1)) {
- throw new ClassCastException();
- } else {
- int var4 = var2.getPrimDataSize();
- if (this.primVals == null || this.primVals.length < var4) {
- this.primVals = new byte[var4];
- }
-
- this.bin.readFully(this.primVals, 0, var4, false);
- if (var1 != null) {
- var2.setPrimFieldValues(var1, this.primVals);
- }
-
- int var5 = this.passHandle;
- ObjectStreamField[] var6 = var2.getFields(false);
- Object[] var7 = new Object[var2.getNumObjFields()];
- int var8 = var6.length - var7.length;
-
- for(int var9 = 0; var9 < var7.length; ++var9) {
- ObjectStreamField var10 = var6[var8 + var9];
- var7[var9] = this.readObject0(var10.isUnshared());
- if (var10.getField() != null) {
- this.handles.markDependency(var5, this.passHandle);
- }
- }
-
- if (var1 != null) {
- var2.setObjFieldValues(var1, var7);
- }
-
- this.passHandle = var5;
- }
- }
-
- private IOException readFatalException() throws IOException {
- if (this.bin.readByte() != 123) {
- throw new InternalError();
- } else {
- this.clear();
- return (IOException)this.readObject0(false);
- }
- }
-
- private void handleReset() throws StreamCorruptedException {
- if (this.depth > 0) {
- throw new StreamCorruptedException("unexpected reset; recursion depth: " + this.depth);
- } else {
- this.clear();
- }
- }
-
- private static native void bytesToFloats(byte[] var0, int var1, float[] var2, int var3, int var4);
-
- private static native void bytesToDoubles(byte[] var0, int var1, double[] var2, int var3, int var4);
-
- private static native ClassLoader latestUserDefinedLoader();
-
- private static Object cloneArray(Object var0) {
- if (var0 instanceof Object[]) {
- return ((Object[])((Object[])var0)).clone();
- } else if (var0 instanceof boolean[]) {
- return ((boolean[])((boolean[])var0)).clone();
- } else if (var0 instanceof byte[]) {
- return ((byte[])((byte[])var0)).clone();
- } else if (var0 instanceof char[]) {
- return ((char[])((char[])var0)).clone();
- } else if (var0 instanceof double[]) {
- return ((double[])((double[])var0)).clone();
- } else if (var0 instanceof float[]) {
- return ((float[])((float[])var0)).clone();
- } else if (var0 instanceof int[]) {
- return ((int[])((int[])var0)).clone();
- } else if (var0 instanceof long[]) {
- return ((long[])((long[])var0)).clone();
- } else if (var0 instanceof double[]) {
- return ((double[])((double[])var0)).clone();
- } else {
- throw new AssertionError();
- }
- }
-
- // $FF: synthetic method
- static int access$000(ObjectInputStream var0) {
- return var0.passHandle;
- }
-
- // $FF: synthetic method
- static HandleTable access$100(ObjectInputStream var0) {
- return var0.handles;
- }
-
- // $FF: synthetic method
- static BlockDataInputStream access$200(ObjectInputStream var0) {
- return var0.bin;
- }
-
- // $FF: synthetic method
- static Object access$300(ObjectInputStream var0, boolean var1) throws IOException {
- return var0.readObject0(var1);
- }
-
- // $FF: synthetic method
- static int access$002(ObjectInputStream var0, int var1) {
- return var0.passHandle = var1;
- }
-
- // $FF: synthetic method
- static boolean access$500(ObjectInputStream var0) {
- return var0.defaultDataEnd;
- }
-
- // $FF: synthetic method
- static void access$600(ObjectInputStream var0) throws StreamCorruptedException {
- var0.handleReset();
- }
-
- // $FF: synthetic method
- static void access$700(byte[] var0, int var1, float[] var2, int var3, int var4) {
- bytesToFloats(var0, var1, var2, var3, var4);
- }
-
- // $FF: synthetic method
- static void access$800(byte[] var0, int var1, double[] var2, int var3, int var4) {
- bytesToDoubles(var0, var1, var2, var3, var4);
- }
-
- static {
- primClasses.put("boolean", Boolean.TYPE);
- primClasses.put("byte", Byte.TYPE);
- primClasses.put("char", Character.TYPE);
- primClasses.put("short", Short.TYPE);
- primClasses.put("int", Integer.TYPE);
- primClasses.put("long", Long.TYPE);
- primClasses.put("float", Float.TYPE);
- primClasses.put("double", Double.TYPE);
- primClasses.put("void", Void.TYPE);
- }
- }
-